/**
* All Rights Reserved , Copyright (C) 2020 , 青岛鼎信通讯股份有限公司
*
* IMeetManageService
* 会议管理
*
* 修改纪录
* 2020-08-14 版本：1.0 wanghongwei 创建。
* @version 版本：1.0
* @author 作者：wanghongwei
* 创建日期：2020-08-14
*/

package com.topscomm.meet.service;

import java.util.List;
import java.util.Map;

import com.topscomm.base.pojo.BasePermissionManageEntity;
import com.topscomm.meet.IMeetService;
import com.topscomm.meet.dao.IMeetManageDao;
import com.topscomm.meet.pojo.MeetManageEntity;
import com.topscomm.meet.pojo.MeetRecordEntity;
import com.topscomm.tap.common.SessionUserBean;

public interface IMeetManageService extends IMeetService<MeetManageEntity, IMeetManageDao> {
	List<Map<String, Object>> queryMeetRoomRecentlyApplyList(Map<String, Object> paraMap);

	MeetManageEntity publishMeet(Map<String, Object> dataMap, SessionUserBean sessionUserBean);

	/**
	  * 实际发布逻辑 创建更新会议纪要  参会人进行变更  工作日程进行对接  新增 修改
	  * @author xinfushuo
	  * @param
	  * @throws
	  * @return
	  * @date 2023/3/31
	  * @modify
	  */
	void doActualPublish(MeetManageEntity meetManageEntity, List<BasePermissionManageEntity> permissionList, List<Map<String, Object>> remindList, SessionUserBean sessionUserBean, boolean isFirstPublish);

    /**
     * 会议信息进行发布
     *
     * @return
     * @author xinfushuo
     * @date 2023/3/31
     * @modify
     */
    void publishAfterApproval(MeetManageEntity meetManageEntity);

    void cancelMeet(Map<String, Object> dataMap, SessionUserBean sessionUserBean);

	MeetManageEntity save(Map<String, Object> dataMap, SessionUserBean sessionUserBean);

	MeetRecordEntity createRecordByMeet(MeetManageEntity meetManageEntity, boolean isAdd);

	/**
	  *
	  * @author xinfushuo
	  * @param
	  * @return
	  * @date 2022/9/7
	  * @throws
	  * @modify
	  */
	void stopSign(String meetid, SessionUserBean userBean);

	void submitWorkSchedule(MeetManageEntity meetManageEntity, List<Map<String, Object>> remindList,
							List<BasePermissionManageEntity> permissionList, boolean isSendMessage, boolean isFirstSend);
	/**
	  * @description: 扫描当天需要确认发布的周期会议进行周期会议发布
	  * @author xinfushuo
	  * @throws
	  * @date 2022/8/19
	  * @modify
	  */
	void sendSubmitMessages();

	/**
	  * 提醒上传会议纪要
	  * @author xinfushuo
	  * @date 2022/8/19
	  * @modify
	  */
	void remindUploadRecord();

	/**
			*  对会议列表记录添加会议录音、会议纪要等会议状态
			* @author xinfushuo
			* @param tempList 查询会议列表
			* @date 2022/8/19
			* @modify
			*/
			void addMeetState(List<Map<String, Object>> tempList);

    /**
      * 向会议秘书+创建人发送消息。
      * @author xinfushuo
      * @date 2023/4/6
      * @modify
      */
    void sendMessageToMeetCreatorAndMessager(String meetid, String subject, String content, String action, String sourceType, String sourceId);

    /**
	*  查询列表替换查询变更中的数据
	* @author xinfushuo
	* @param tempList 查询会议列表
	* @date 2022/8/19
	* @modify
	*/
	void replaceChangeMeetInfo(List<Map<String, Object>> tempList);

	/**
	 *  判断当前登录用户是否可以进行签到
	 * @author xinfushuo
	 * @param meetId 会议id
	 * @return 用户是否可以签到
	 * @date 2022/8/19
	 * @modify
	 */
    Boolean isCanSign(String meetId);

    /**
    * @Description:    根据会议id查询所有的参会人员
    * @Author:         mengmeng
    * @Date:           2021/5/28 14:22
    * @Version:        1.0
    */
    List<Map<String, Object>> queryUserByMeetId(long meetId);

    /**
    * @Description:    录音权限转让
    * @Author:         mengmeng
    * @Date:           2021/6/1 14:51
    * @Version:        1.0
    */
	void transferRecordAuthority(long meetId, String userCode);

	/**
	* @Description:    根据当前用户作为发起人或者会议秘书查询名称模糊匹配的会议
	* @Author:         mengmeng
	* @Date:           2021/6/3 9:57
	* @Version:        1.0
	*/
	List<MeetManageEntity> queryByCondition(Map<String, Object> paraMap);

	/**
	* @Description:    判断当前登录人对指定的会议是否已经参与
	* @Author:         mengmeng
	* @Param:          meetId
	* @Return:
	* @exception:
	* @Date:           2021/6/17 9:37
	* @Version:        1.0
	*/
	boolean judgeCurrentUserAttendMeet(String meetId);

	Boolean queryUploadedRecordOfMicro(String sourcetype, long sourceid, String sourceapp);
}
